import pandas as pd
import matplotlib.pyplot as plt

# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows系统
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 读取Excel文件
df = pd.read_excel("E:/Git/下一组/next-group/project/练习一/FhjlViewDD.xlsx")

# 将创建时间转换为日期时间格式
df['创建时间'] = pd.to_datetime(df['创建时间'])

# 提取日期
df['日期'] = df['创建时间'].dt.date

# a. 统计6月份每日矿粉货运量的日趋势，并绘制柱状图
mineral_powder_daily = df[df['货品'] == '矿粉'].groupby('日期')['净重'].sum()
mineral_powder_daily.plot(kind='bar', figsize=(10, 6), title='6月份每日矿粉货运量')
plt.xlabel('日期')
plt.ylabel('货运量 (吨)')
plt.show()

# b. 统计6月份每日水泥货运量的日趋势，并绘制柱状图
cement_daily = df[df['货品'] == '水泥'].groupby('日期')['净重'].sum()
cement_daily.plot(kind='bar', figsize=(10, 6), title='6月份每日水泥货运量')
plt.xlabel('日期')
plt.ylabel('货运量 (吨)')
plt.show()

# c. 统计每个客户的6月份的货运需求量，并按大到小排序
customer_demand = df.groupby('客户')['净重'].sum().sort_values(ascending=False)
print("6月份每个客户的货运需求量：")
print(customer_demand)

# d. 统计6月份各发货地的发货总量，并绘制柱状图
shipping_origin_total = df.groupby('发货地')['净重'].sum()
shipping_origin_total.plot(kind='bar', figsize=(10, 6), title='6月份各发货地的发货总量')
plt.xlabel('发货地')
plt.ylabel('发货总量 (吨)')
plt.show()

# e. 统计6月份各车牌号的总货运量，并按大到小排序
vehicle_total = df.groupby('车辆')['净重'].sum().sort_values(ascending=False)
print("6月份各车牌号的总货运量：")
print(vehicle_total)

# 保存图表
plt.figure(figsize=(10, 6))
mineral_powder_daily.plot(kind='bar', title='6月份每日矿粉货运量')
plt.xlabel('日期')
plt.ylabel('货运量 (吨)')
plt.savefig('E:/Git/下一组/next-group/project/练习一/练习一杨紫焱/mineral_powder_daily.png')
plt.close()

plt.figure(figsize=(10, 6))
cement_daily.plot(kind='bar', title='6月份每日水泥货运量')
plt.xlabel('日期')
plt.ylabel('货运量 (吨)')
plt.savefig('E:/Git/下一组/next-group/project/练习一/练习一杨紫焱/cement_daily.png')
plt.close()

plt.figure(figsize=(10, 6))
shipping_origin_total.plot(kind='bar', title='6月份各发货地的发货总量')
plt.xlabel('发货地')
plt.ylabel('发货总量 (吨)')
plt.savefig('E:/Git/下一组/next-group/project/练习一/练习一杨紫焱/shipping_origin_total.png')
plt.close()